home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
A Teacher's Guide to the Holocaust
/
A Teacher's Guide to the Holocaust.iso
/
data
/
timeline
/
scripts
/
elemibtnclass.js
< prev
next >
Wrap
Text File
|
2000-06-26
|
6KB
|
214 lines
// Copyright 1998,1999 Macromedia, Inc. All rights reserved.
//Constructs a image button element
function MM_ibtn(theParent, theName, theInitialValue,
theExpectedValue, theIsCorrect, theScore,
theIsToggle, theStateMask)
{
// properties
this.initialValue = theInitialValue;
this.value = '';
this.disabled = true;
this.expectedValue = theExpectedValue;
this.isCorrect = theIsCorrect;
this.score = theScore;
this.selected = false;
this.isToggle = theIsToggle;
this._parent = theParent;
this._name = theName;
this._obj = '';
this._stateMask = theStateMask ? theStateMask : '';
this._mouseOver = false;
this._mouseDown = false;
this._filePre = '';
this._fileExt = '';
this.c = new Array(this); // NOTE: choice info stored on the element.
// member functions
this.init = MM_ibtnInit;
this.reset = MM_ibtnReset;
this.enable = MM_ibtnEnable;
this.disable = MM_ibtnDisable;
this.setDisabled = MM_ibtnSetDisabled;
this.update = MM_ibtnUpdate;
this.redraw = MM_ibtnRedraw;
this.validValue = MM_ibtnValidValue;
this.changeValue = MM_ibtnChangeValue;
this.setValue = MM_ibtnSetValue;
this.setSelected = MM_ibtnSetSelected;
this.setIsToggle = MM_ibtnSetIsToggle;
}
// Initializes the element
function MM_ibtnInit() {
var theSrc, extIndex, maskArray, extArray, i;
with (this) {
if (! _stateMask) return;
_obj = MM_intFindObject(_parent._self + _name + "Btn");
if (_obj && _obj.src != null) {
theSrc = _obj.src;
extIndex = theSrc.lastIndexOf(".");
if (extIndex != -1) { // save the extension
_fileExt = theSrc.substring(extIndex, theSrc.length);
theSrc = theSrc.substring(0, extIndex); // remove extension
}
if (theSrc.lastIndexOf("_sel") != -1)
_filePre = theSrc.substring(0, theSrc.lastIndexOf("_sel"));
else if (theSrc.lastIndexOf("_hlt") != -1)
_filePre = theSrc.substring(0, theSrc.lastIndexOf("_hlt"));
else if (theSrc.lastIndexOf("_dis") != -1)
_filePre = theSrc.substring(0, theSrc.lastIndexOf("_dis"));
else
_filePre = theSrc;
// preload the images
maskArray = new Array('s', 'S', 'h', 'H', 'd', 'D');
extArray = new Array("", "_sel", "_hlt", "_sel_hlt", "_dis", "_sel_dis");
for (i=0; i < maskArray.length; i++)
if (_stateMask.indexOf(maskArray[i]) != -1)
MM_preloadImages(_filePre + extArray[i] + _fileExt);
} }
}
//Resets the element
function MM_ibtnReset() {
var isChanged = '';
with (this) {
isChanged = (value != initialValue);
_mouseOver = false;
_mouseDown = false;
value = initialValue;
_parent.disabled ? disable() : enable();
validValue();
redraw();
if (isChanged && this.onChange != null) onChange(_parent._self+_name, value);
}
}
//Enables the element
function MM_ibtnEnable() {
if (this._obj) with (this) {
disabled = false;
redraw();
}
}
//Disables the element
function MM_ibtnDisable() {
this.disabled = true;
this.redraw();
}
//Calls the approppriate disable or enable function
function MM_ibtnSetDisabled(theDisabled) {
if (theDisabled) this.disable();
else this.enable();
}
//Called by the onClick, onMouseOver, onMouseDown, and onMouseOut
// events of the A tag, to change the button image and state
function MM_ibtnUpdate(theEvent) {
if (!this.disabled) with (this) {
if (theEvent != "onclick") {
if (theEvent == "onmouseover") {
if (_mouseOver) return;
_mouseOver = true;
} else if (theEvent == "onmouseout") {
if (!_mouseDown && !_mouseOver) return;
_mouseDown = false;
_mouseOver = false;
} else if (theEvent == "onmousedown") {
if (_mouseDown) return;
_mouseDown = true;
}
redraw();
} else { // onclick
_mouseDown = false;
changeValue((_parent.allowMultiSel) ? !value : true);
_parent.update();
} }
}
// Sets the image based on the button state
function MM_ibtnRedraw() {
if (this._filePre) with (this) {
var imageIndex = 's';
var imageExt = '';
if (disabled) {
imageIndex = 'd';
imageExt += "_dis";
} else if (_mouseOver) {
imageIndex = 'h';
imageExt += "_hlt";
}
if ((value && isToggle) || _mouseDown) {
if (_stateMask.indexOf(imageIndex.toUpperCase()) != -1) {
imageExt = "_sel" + imageExt;
} else if (_stateMask.indexOf(imageIndex) == -1) {
// unselected images not found
if (_stateMask.indexOf('S') != -1) imageExt = "_sel";
else imageExt = '';
}
} else if (_stateMask.indexOf(imageIndex) == -1) imageExt = '';
var currImageName = _obj.src;
var imageName = _filePre + imageExt + _fileExt;
if (currImageName != imageName) _obj.src = imageName;
}
}
function MM_ibtnValidValue() {
this.selected = (this.value == this.expectedValue);
return this.selected;
}
function MM_ibtnChangeValue(theValue) {
var i, isChanged = '', isReset = '';
with (this) {
isChanged = (value != theValue);
if (!_parent.allowMultiSel) {
value = theValue;
for (i in _parent.e) if (i != 'length') with (_parent) {
if (e[i] != this) {
isReset = (e[i].value != false);
e[i].value = false;
}
e[i].validValue();
e[i].redraw();
if (e[i] != this && isReset && e[i].onChange != null)
e[i].onChange(e[i]._parent._self+e[i]._name, e[i].value);
}
} else {
value = theValue;
validValue();
redraw();
}
if (isChanged && this.onChange != null) onChange(_parent._self+_name, value);
}
}
function MM_ibtnSetValue(theValue) {
with (this) {
changeValue(theValue);
_parent.update(true); // update int, but don't judge
}
}
function MM_ibtnSetSelected(theSelected) {
if (theSelected)
this.setValue(this.expectedValue);
else
this.setValue(!this.expectedValue);
}
function MM_ibtnSetIsToggle(theIsToggle) {
with (this) {
isToggle = theIsToggle;
redraw();
}
}